package com.zsjt.divideandconquer;

/**
 * @author ZhanBo
 * @date 2020/5/31
 */
public class HanLuoTower {

    public static void main(String[] args) {
        hanLuoTower(3,'A','B','C');
    }

    /**
     * 分治实现汉落塔
     * @param num
     * @param a
     * @param b
     * @param c
     */
    public static void hanLuoTower(int num , char a ,char b , char c){
        //如果只有一个盘
        if (num == 1){
            System.out.println("第1个盘从 "+a+"到->"+c);
        }else {
            //如果n>=2的情况，我们总是可以看作两个盘1。最下边的一个盘，2，上面的所有盘
            //1.先把最上面的所有盘A->B,移动过程会使用到c
            hanLuoTower(num-1,a,c,b);
            //2.最下边的盘A->C
            System.out.println("第"+num+"个盘从 "+a+"到->"+c);
            //3.把B塔所有盘从B->C,移动过程使用A塔
            hanLuoTower(num-1,b,a,c);
        }
    }
}
